package com.jc.order.dto;

import com.jc.order.util.DTOCompareUtil.*;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 限额申请表对象
 */
@Data
public class QuotaApplyDTO {

    // 基础信息
    @IgnoreCompare
    private Long applyId;
    @IgnoreCompare
    private Long tenantId;
//    /**
//     * 发送方，长度：无
//     */
//    private String sender;
//    /**
//     * 接收方（固定值PICC），长度：无
//     */
//    private String receiver;
//    /**
//     * 发送时间，长度：无
//     */
//    private Date creationDateTime;
//    /**
//     * 接口类型（固定值：GOMS_QuotaApply），长度：无
//     */
//    private String messageType;
//    /**
//     * 信息状态 默认 0，长度：无
//     */
//    private String messageStatus;
//    /**
//     * 接口版本号 默认 1，长度：无
//     */
//    private String version;
//    /**
//     * UUID，长度：无
//     */
//    private String documentId;
//    /**
//     * UsageIndicator  默认 P，长度：无
//     */
//    private String usageIndicator;

    // 买方信息
    /**
     * 买方名称（英文大写），长度：600
     */
    @FieldDesc("买方名称")
    private String riskCompName;
    /**
     * 买方国家和地区，长度：50
     */
    @FieldDesc("买方国家和地区")
    private String countryOrArea;
    /**
     * 买方地址（英文大写），长度：300
     */
    @FieldDesc("买方地址")
    private String riskCompAddress;
    /**
     * 买方所属省份  买方国家和地区 =CHN 必填，长度：12
     */
    @FieldDesc("买方所属省份")
    private String province;
    /**
     * 买方联系电话，长度：50
     */
    @FieldDesc("买方联系电话")
    private String riskPhone;
    /**
     * 买方注册号，长度：100
     */
    @FieldDesc("买方注册号")
    private String riskMark;

    // 限额信息
    /**
     * 限额期限（整数），长度：5
     */
    @FieldDesc("限额期限")
    private Integer paidTerm;
    /**
     * 金额（整数），长度：20
     */
    @FieldDesc("金额")
    private BigDecimal appliAmount;

    /**
     * 报告类型（1：普通；2：加急），长度：1
     */
    @FieldDesc("报告类型")
    private String reportType;

    /**
     * 商品类别，长度：200
     */
    @FieldDesc("商品类别")
    private String exportTrade;
    /**
     * 商品类别说明（当商品类别选择其它时为必填），长度：40
     */
    @FieldDesc("商品类别说明")
    private String exportTradeInput;

    /**
     * 运输方式（海运/空运/陆运/海陆联运），长度：10
     */
    @FieldDesc("运输方式")
    private String transType;

    // 信用证必填
    /**
     * 信用证号，长度：50
     */
    @FieldDesc("信用证号")
    private String creditNo;
    /**
     * 申请限额是否循环使用（信用证必填 0：非循环使用；1：循环使用），长度：1
     */
    @FieldDesc("否循环使用")
    private String isCycleUse;

    /**
     * 开证行名称（英文大写），长度：150
     */
    @FieldDesc("开证行名称")
    private String bankName;
    /**
     * 开证行国家和地区，长度：50
     */
    @FieldDesc("开证行国家和地区")
    private String bankCountry;
    /**
     * 开证行SWIFT，长度：50
     */
    @FieldDesc("开证行SWIFT")
    private String bankSwift;
    /**
     * 开证行地址，长度：200
     */
    @FieldDesc("开证行地址")
    private String bankAddress;

    /**
     * 出口商品名称
     * <p>
     * 信用证出口商品名称，长度：100
     */
    @FieldDesc("出口商品名称")
    private String exportComName;
    /**
     * 是否分批（0：否；1：是），长度：1
     */
    @FieldDesc("是否分批")
    private String isBatch;

    /**
     * 是否分批 =1 必填 整数 第一批金额（整数），长度：22
     */
    @FieldDesc("第一批金额")
    private BigDecimal maxAmount1;
    /**
     * 是否分批 =1 必填 第二批金额（整数），长度：22
     */
    @FieldDesc("第二批金额")
    private BigDecimal maxAmount2;

    // 信用证必填结束

    // 历史交易信息
    /**
     * 是否存在历史交易（0：否；1：是），长度：1
     */
    @FieldDesc("是否存在历史交易")
    private String historyBusiness;
    /**
     * 存在历史交易外贸情况下必填 例：2019  最早成交年份（例：2019），长度：50
     */
    @FieldDesc("最早成交年份")
    private String earlyDealYear;
    /**
     * 信用证下并且存在历史交易情况下必填   银行付款表现（及时/尚可/较慢），长度：10
     */
    @FieldDesc("银行付款表现")
    private String bankPerformance;
    /**
     * 存在历史交易情况下必填 买方付款表现（及时/不及时），长度：10
     */
    @FieldDesc("买方付款表现")
    private String riskPerformance;

    /**
     * 开始放账年份（例：2019），长度：50
     */
    @FieldDesc("开始放账年份")
    private String startYear;

    // 存在历史交易外贸情况下必填 三项最少填写一项 (transactionLc,transactionDp,transactionDa)
    /**
     * L/C交易金额（整数），长度：50
     */
    @FieldDesc("L/C交易金额")
    private String transactionLc;
    /**
     * D/P交易金额（整数），长度：50
     */
    @FieldDesc("D/P交易金额")
    private String transactionDp;
    /**
     * D/A&OA交易金额（整数），长度：50
     */
    @FieldDesc("D/A&OA交易金额")
    private String transactionDa;

    /**
     * 历史上是否有拖欠（0：无；1：有），长度：1
     */
    @FieldDesc("历史上是否有拖欠")
    private String isDefaultThis;
    /**
     * 存在拖欠情况下必填 拖欠金额（整数），长度：22
     */
    @FieldDesc("拖欠金额")
    private BigDecimal defaultAmount;
    /**
     * 存在拖欠情况下必填 拖欠时间（正整数），长度：5
     */
    @FieldDesc("拖欠时间")
    private Integer defaultDate;

    // 其他信息
    /**
     * 备注，长度：1500
     */
    @FieldDesc("备注")
    private String remark;

    /**
     * 限额变更原因
     * <p>
     * 外贸LC：1：信用限额提高,2：信用限额降低, 3：信用期限调整, 5：信用限额生效日期倒签,
     * 外贸非LC：1：信用限额提高,2：信用限额降低, 3：信用期限调整, 4：支付方式调整, 5：信用限额生效日期倒签，长度：12
     */
    @FieldDesc("限额变更原因")
    private String changeReasonCode;

    /**
     * 逾期未回款原因说明，长度：500
     */
    @FieldDesc("逾期未回款原因说明")
    private String changeReasonRemark;

    /**
     * 是否首次申请（0：首次；1：修改/变更），长度：1
     */
    @FieldDesc("是否首次申请")
    private String isNew;
    /**
     * 申请状态（1/2/3/4）
     * 内贸以及非信用证必填 1：已调取资信报告；2：未调取资信报告；3：自行掌握限额；4：hold cover，长度：20
     */
    @FieldDesc("申请状态")
    private String isReport;
    /**
     * 出口商品名称(非LC)
     * <p>
     * 外贸非信用证下必填 内贸以及信用证非必填，长度：100
     */
    @FieldDesc("出口商品名称")
    private String exportName;

    /**
     * 支付方式
     * 内贸:空字符串
     * 外贸信用证:LC:LC
     * 外贸非信用证:DP：DP；DA：DA；OA：OA，长度：50
     */
    @FieldDesc("支付方式")
    private String payWay;

    /**
     * 是否需要翻译件 外贸非信用证必录1：不需要；2：需要，长度：1
     */
    @FieldDesc("是否需要翻译件")
    private String needTranslation;

    /**
     * 系统流水号，长度：50
     */
    @IgnoreCompare
    private String corpSerialNo;

//    /**
//     * 保单号，长度：22
//     */
//    private String bussinessNo;
//    /**
//     * 被保险人piccCode，长度：44
//     */
//    private String insuredPiccCode;

    /**
     * 业务类型
     * <p>
     * 信用证=LC
     * 非信用证=NON_LC
     */
    @FieldDesc("业务类型")
    private String businessType;


    /**
     * 数据状态：1.待申请，10.已提交，20.待批复，30.已通过，100.已拒绝
     */
    @FieldDesc("数据状态")
    private String dataStatus;





    /**
     * 创建时间
     */
    @IgnoreCompare
    private Date createTime;

    /**
     * 更新时间
     */
    @FieldDesc("更新时间")
    private Date updateTime;

    /**
     * 创建人
     */
    @IgnoreCompare
    private String createUser;

    /**
     * 更新人
     */
    @FieldDesc("更新人")
    private String updateUser;









    @IgnoreCompare
    private List<String> errors;



}